package com.rw.coco.api.data;

import java.util.Optional;

/**
 * 缓存数据交互接口
 */
public interface CacheMapper {
    /**
     * 储存缓存数据
     *
     * @param key         储存数据的key值
     * @param data        数据
     * @param millisecond 数据过期的毫秒数
     */
    void save(String key, int data, long millisecond);

    /**
     * 如果指定数据存在，则将数据+1，不需要变更过期时间
     * 如果指定数据不存在，则不进行操作
     * 请保证这个操作的原子性
     *
     * @param key 储存数据的key值
     * @return 自增之后的数据
     */
    Optional<Integer> increment(String key);

    /**
     * 获取缓存数据
     *
     * @param key 储存数据的key值
     * @return 缓存的数据
     */
    Optional<Integer> get(String key);

    /**
     * 删除缓存数据
     *
     * @param key 要删除缓存数据的key值
     */
    void delete(String key);
}
